home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 5_2007-2008.ISO / data / Zips / The_Last_H20903111112007.psc / The Last Hope / CAsteroids.cls next >
Text File  |  2007-11-10  |  4KB  |  113 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "CAsteroids"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. Option Explicit
  15. 'This class handles all actions regarding the movement of Asteroid
  16. 'Creating new Asteroids
  17. 'Their collision with Fire and Ship etc
  18. 'Drawing Asteroid in the MEMDC
  19. 'For asteroid's rotation
  20. Private AsteroidS(0 To 30) As Byte
  21. 'WE shall be using i in many loops
  22. Dim i As Byte
  23.  
  24. Public Sub DoAsteroids()
  25. Static TimeDelay As Byte
  26. 'Delay the time so as not to refresh the asteroid state quickly
  27.     TimeDelay = TimeDelay + 1
  28.     If TimeDelay > 8 Then
  29.         TimeDelay = 0
  30.         ChangeAsteroidState
  31.     End If
  32. 'Check collision and Draw all the asteroids
  33. CheckCurrAsteroids
  34. End Sub
  35.  
  36. Public Sub InitAsteroids()
  37. '(Optional) Can be used to initialize game with few asteroids
  38.     Randomize
  39.     For i = 1 To 6
  40.         Asteroid(i) = 1
  41.         AsteroidX(i) = Int(Rnd * He + 1)
  42.                AsteroidY(i) = Int(Rnd * 200 + 1)
  43.         AsteroidS(i) = Int(Rnd * 10 + 1)
  44.         AsteroidRate(i) = 1
  45.         CurrAsteroid = CurrAsteroid + 1
  46.     Next i
  47. End Sub
  48.  
  49. Public Sub CreateAsteroid()
  50. 'Creates a new asteroid in every fixed interval of time triggered by timer2 in
  51. 'frmMain
  52. Randomize
  53. Dim i As Integer, Rate As Byte
  54. i = CurrAsteroid + 1
  55.         Asteroid(i) = 1
  56.         Randomize
  57.         AsteroidX(i) = Int(Rnd * He + 1)
  58.         AsteroidY(i) = 0
  59.         AsteroidS(i) = Int(Rnd * 10 + 1)
  60.         Rate = Int(Rnd * 15 + 1)
  61.         If Rate < 2 Then
  62.         AsteroidRate(i) = 2
  63.         Else
  64.         AsteroidRate(i) = 1: End If
  65.         CurrAsteroid = CurrAsteroid + 1
  66.     
  67. End Sub
  68.  
  69. Private Sub CheckCurrAsteroids()
  70. 'Check for all current asteroid and detect collision and others
  71.     For i = 1 To CurrAsteroid
  72.         If Asteroid(i) = 1 Then
  73.             AsteroidY(i) = AsteroidY(i) + AsteroidRate(i)
  74.             If AsteroidY(i) > (He - 50) Then
  75.                 'Asteroid that move fastly do more damage
  76.                 If AsteroidRate(i) = 1 Then
  77.                 Damage = Damage + 1
  78.                 Else
  79.                 Damage = Damage + 2
  80.                 End If
  81.                 'If more than 20 Asteroids pass through then game over
  82.                 If Damage = 20 Then GameOver = True
  83.                 DeleteAsteroid (i)
  84.             End If
  85.             DrawAsteroid i, AsteroidS(i - 1)
  86.         End If
  87.     Next
  88. End Sub
  89.  
  90. Private Sub ChangeAsteroidState()
  91. 'Handles the Asteroid's rotation
  92.     If CurrAsteroid = 0 Then Exit Sub
  93.     For i = 0 To CurrAsteroid - 1
  94.         If AsteroidS(i) > 8 Then AsteroidS(i) = 0
  95.         AsteroidS(i) = AsteroidS(i) + 1
  96.     Next
  97. End Sub
  98. Private Sub DrawAsteroid(ByVal Index As Integer, State As Byte)
  99.     Dim Height As Integer, Xcord As Integer
  100.     Height = frmMain.picAsteroids.Height
  101.     Xcord = 50 * State
  102.     BitBlt MemDc, AsteroidX(Index), AsteroidY(Index), 50, Height, frmMain.maskAsteroid.hdc, Xcord, 0, vbSrcAnd
  103.     BitBlt MemDc, AsteroidX(Index), AsteroidY(Index), 50, Height, frmMain.picAsteroids.hdc, Xcord, 0, vbSrcPaint
  104. End Sub
  105.  
  106.  
  107. Private Sub DeleteAsteroid(Index As Integer)
  108. 'Destroys asteroid after Collision
  109.     Dim Collision As New cCollision
  110.     Collision.DestroyAsteroid (Index)
  111.     Set Collision = Nothing
  112. End Sub
  113.